package interfacegrafica;

import codigo.*;
import java.util.*;
import javax.swing.*;
import java.io.*;

public class jFmenu extends javax.swing.JFrame {

    public jFmenu() {
        //Le e carrega o arquivo garcom
        iniciarGarcom();
        dispose();
        //Le e carrega o arquivo produto
        iniciarProduto();
        dispose();
        initComponents();
        setLocationRelativeTo(null);
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenuItem1 = new javax.swing.JMenuItem();
        jMenuItem2 = new javax.swing.JMenuItem();
        jMenu2 = new javax.swing.JMenu();
        jMenuItem3 = new javax.swing.JMenuItem();
        jMenuItem5 = new javax.swing.JMenuItem();
        jMenu5 = new javax.swing.JMenu();
        jMenuItem9 = new javax.swing.JMenuItem();
        jMenuItem10 = new javax.swing.JMenuItem();
        jMenuItem11 = new javax.swing.JMenuItem();
        jMenu4 = new javax.swing.JMenu();
        jMenuItem6 = new javax.swing.JMenuItem();
        jMenuItem4 = new javax.swing.JMenuItem();
        jMenuItem7 = new javax.swing.JMenuItem();
        jMenuItem8 = new javax.swing.JMenuItem();
        jMenu3 = new javax.swing.JMenu();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Caixa de restaurante");
        setBounds(new java.awt.Rectangle(300, 300, 200, 200));
        setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        setResizable(false);
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                formWindowClosing(evt);
            }
        });

        jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/tela.jpg"))); // NOI18N
        jLabel1.setText("jLabel1");

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 569, Short.MAX_VALUE)
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 425, Short.MAX_VALUE))
        );

        jMenuBar1.setBackground(new java.awt.Color(158, 158, 158));

        jMenu1.setMnemonic('C');
        jMenu1.setText("Cadastro");

        jMenuItem1.setMnemonic('p');
        jMenuItem1.setText("Produto");
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem1);

        jMenuItem2.setMnemonic('g');
        jMenuItem2.setText("Garçom");
        jMenuItem2.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jMenuItem2MouseClicked(evt);
            }
        });
        jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem2ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem2);

        jMenuBar1.add(jMenu1);

        jMenu2.setMnemonic('a');
        jMenu2.setText("Caixa");

        jMenuItem3.setMnemonic('A');
        jMenuItem3.setText("Abrir caixa");
        jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem3ActionPerformed(evt);
            }
        });
        jMenu2.add(jMenuItem3);

        jMenuItem5.setMnemonic('B');
        jMenuItem5.setText("Balanço");
        jMenuItem5.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem5ActionPerformed(evt);
            }
        });
        jMenu2.add(jMenuItem5);

        jMenuBar1.add(jMenu2);

        jMenu5.setText("Consultar");

        jMenuItem9.setText("Gorjetas");
        jMenuItem9.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem9ActionPerformed(evt);
            }
        });
        jMenu5.add(jMenuItem9);

        jMenuItem10.setText("Produto mais vendido");
        jMenuItem10.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem10ActionPerformed(evt);
            }
        });
        jMenu5.add(jMenuItem10);

        jMenuItem11.setText("Produto menos vendido");
        jMenuItem11.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem11ActionPerformed(evt);
            }
        });
        jMenu5.add(jMenuItem11);

        jMenuBar1.add(jMenu5);

        jMenu4.setMnemonic('O');
        jMenu4.setText("Comanda");

        jMenuItem6.setMnemonic('C');
        jMenuItem6.setText("Cadastrar");
        jMenuItem6.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem6ActionPerformed(evt);
            }
        });
        jMenu4.add(jMenuItem6);

        jMenuItem4.setMnemonic('O');
        jMenuItem4.setText("Consultar");
        jMenuItem4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem4ActionPerformed(evt);
            }
        });
        jMenu4.add(jMenuItem4);

        jMenuItem7.setMnemonic('A');
        jMenuItem7.setText("Atualizar");
        jMenuItem7.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem7ActionPerformed(evt);
            }
        });
        jMenu4.add(jMenuItem7);

        jMenuItem8.setMnemonic('E');
        jMenuItem8.setText("Encerrar");
        jMenuItem8.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem8ActionPerformed(evt);
            }
        });
        jMenu4.add(jMenuItem8);

        jMenuBar1.add(jMenu4);

        jMenu3.setMnemonic('S');
        jMenu3.setText("Sair");
        jMenu3.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jMenu3MouseClicked(evt);
            }
        });
        jMenuBar1.add(jMenu3);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 573, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(14, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
        new jFcadastraProduto().show();
    }//GEN-LAST:event_jMenuItem1ActionPerformed

    private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed
        new jFcadastraGarcom().show();
    }//GEN-LAST:event_jMenuItem2ActionPerformed

    private void jMenuItem2MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jMenuItem2MouseClicked
    }//GEN-LAST:event_jMenuItem2MouseClicked

    private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem3ActionPerformed
        new jFabrirCaixa().show();
    }//GEN-LAST:event_jMenuItem3ActionPerformed

    private void jMenu3MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jMenu3MouseClicked
        //Grava a linked list garcom no arquivo
        gravarGarcom();
        dispose();
        //Grava a linked list produto no arquivo
        gravarProduto();
        dispose();
        System.exit(0);
    }//GEN-LAST:event_jMenu3MouseClicked

    private void jMenuItem6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem6ActionPerformed
        new jFcadastraComanda().show();
    }//GEN-LAST:event_jMenuItem6ActionPerformed

    private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem4ActionPerformed
        new jFconsultarComanda().show();
    }//GEN-LAST:event_jMenuItem4ActionPerformed

    private void jMenuItem7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem7ActionPerformed
        new jFatualizarComanda().show();
    }//GEN-LAST:event_jMenuItem7ActionPerformed

    private void jMenuItem8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem8ActionPerformed
        new jFencerrarComanda().show();
    }//GEN-LAST:event_jMenuItem8ActionPerformed

    private void jMenuItem5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem5ActionPerformed
        new jFbalanco().show();
    }//GEN-LAST:event_jMenuItem5ActionPerformed

    private void jMenuItem9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem9ActionPerformed
        new jFgorjetaGarcom().show();
    }//GEN-LAST:event_jMenuItem9ActionPerformed

    private void jMenuItem10ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem10ActionPerformed

        int produto_mais_vendido = 0;
        int indice_do_mais_vendido = 0;
        int indice = 0;
        
        if (jFencerrarComanda.aux) {
            //Verifica a quantidade de produtos existente
            if (jFmenu.retornaProdutos().size() == 0 || jFmenu.retornaProdutos().size() == 1) {
                if (jFmenu.retornaProdutos().size() == 0) {
                    JOptionPane.showMessageDialog(jFmenu.this, "ERRO: Nenhum produto cadastrado!", "Erro", JOptionPane.ERROR_MESSAGE);
                } else {
                    JOptionPane.showMessageDialog(jFmenu.this, "ERRO: Apenas um produto cadastrado, impossível fazer comparação", "Erro", JOptionPane.ERROR_MESSAGE);

                }
            } else {

                //For-each para varrer a linkedList de protudos
                for (Produto p : jFmenu.retornaProdutos()) {

                    //Verifica se a quantidade vendida de produtos é a maior se sim, guarda este indice
                    if (p.getQuantidadeVendida() > produto_mais_vendido) {
                        produto_mais_vendido = p.getQuantidadeVendida();
                        indice_do_mais_vendido = indice;
                    }

                    indice++;

                }

                //Exibe o produto mais vendido de acordo com o indice
                JOptionPane.showMessageDialog(jFmenu.this, "Produto mais vendido até o momento:\n\n" + jFmenu.retornaUmProduto(indice_do_mais_vendido).toString(), "Produto mais vendido", JOptionPane.INFORMATION_MESSAGE);
            }
        } else {
            JOptionPane.showMessageDialog(jFmenu.this, "nenhuma comanda encerrada");
        }


    }//GEN-LAST:event_jMenuItem10ActionPerformed

    private void jMenuItem11ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem11ActionPerformed

        int produto_menos_vendido = 1000000000;
        int indice_do_menos_vendido = 0;
        int indice = 0;
        
        if (jFencerrarComanda.aux) {
            //Verifica a quantidade de produtos existente
            if (jFmenu.retornaProdutos().size() == 0 || jFmenu.retornaProdutos().size() == 1) {

                if (jFmenu.retornaProdutos().size() == 0) {
                    JOptionPane.showMessageDialog(jFmenu.this, "ERRO: Nenhum produto cadastrado!", "Erro", JOptionPane.ERROR_MESSAGE);
                } else {
                    JOptionPane.showMessageDialog(jFmenu.this, "ERRO: Apenas um produto cadastrado, impossível fazer comparação", "Erro", JOptionPane.ERROR_MESSAGE);
                }

            } else {
                //For-each para varrer a linkedList de protudos
                for (Produto p : jFmenu.retornaProdutos()) {
                    
                    //Verifica se a quantidade vendida de produtos é a menor se sim, guarda este indice
                    if (p.getQuantidadeVendida() < produto_menos_vendido) {
                        produto_menos_vendido = p.getQuantidadeVendida();
                        indice_do_menos_vendido = indice;
                    }

                    indice++;

                }

                JOptionPane.showMessageDialog(jFmenu.this, "Produto menos vendido até o momento:\n\n" + jFmenu.retornaUmProduto(indice_do_menos_vendido).toString(), "Produto menos vendido", JOptionPane.INFORMATION_MESSAGE);

            }



        } else {
            JOptionPane.showMessageDialog(jFmenu.this, "nenhuma comanda encerrada");
        }


    }//GEN-LAST:event_jMenuItem11ActionPerformed

    private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
        //Grava a linkedList garcom no arquivo
        gravarGarcom();
        dispose();
        //Grava a linkedList produto no arquivo
        gravarProduto();
        dispose();
        System.exit(0);
    }//GEN-LAST:event_formWindowClosing

    public void iniciarGarcom() {
        //Ler o arquivo garcom
        try {
            inputGarcom = new DataInputStream(new FileInputStream("garcom.dat"));
        } catch (IOException e) {
            JOptionPane.showMessageDialog(jFmenu.this, "Falha na Abertura do Arquivo para Leitura", "Erro", JOptionPane.ERROR_MESSAGE);
            System.exit(1);
        }

        //InstanciarGarcom
        String nome;
        int codigo;
        double gorjeta;
        double totalGorjeta;
        
        //Carrega os garcons do arquivo para as coleções
        try {
            while (moreRecordsGarcom) {
                nome = inputGarcom.readUTF();
                codigo = inputGarcom.readInt();
                gorjeta = inputGarcom.readDouble();
                totalGorjeta = inputGarcom.readDouble();

                Garcom temporario = new Garcom(nome, codigo, gorjeta, totalGorjeta);
                adicionaGarcom(temporario);
            }
        } catch (EOFException eof) {
            moreRecordsGarcom = false;
        } catch (IOException e) {
            JOptionPane.showMessageDialog(jFmenu.this, "Erro durante leitura do arquivo", "Erro", JOptionPane.ERROR_MESSAGE);
            System.exit(1);
        }

        //Fecha inputGarcom
        try {
            inputGarcom.close();
        } catch (IOException e) {
            JOptionPane.showMessageDialog(jFmenu.this, "Falha no Fechamento do Arquivo durante Leitura", "Erro", JOptionPane.ERROR_MESSAGE);
            System.exit(1);
        }


    }

    public void gravarGarcom() {
        //Abre arquivo para gravar
        try {
            outputGarcom = new DataOutputStream(new FileOutputStream("garcom.dat", false));
        } catch (IOException e) {
            JOptionPane.showMessageDialog(jFmenu.this, "Falha na Abertura do Arquivo para Gravação", "Erro", JOptionPane.ERROR_MESSAGE);
            System.exit(1);
        }

        //Carrega toda a coleção no arquivo
        try {
            for (Garcom a : garcons) {
                outputGarcom.writeUTF(a.getNome());
                outputGarcom.writeInt(a.getCodigo());
                outputGarcom.writeDouble(a.getGorjeta());
                outputGarcom.writeDouble(a.getTotalGorjeta());
            }
        } catch (IOException e) {
            JOptionPane.showMessageDialog(jFmenu.this, "Erro durante gravação no arquivo", "Erro", JOptionPane.ERROR_MESSAGE);
            System.exit(1);
        }

        //Fecha os arquivos Output garcom
        try {
            outputGarcom.flush();
            outputGarcom.close();
        } catch (IOException e) {
            JOptionPane.showMessageDialog(jFmenu.this, "Falha no Fechamento do Arquivo - Durante Gravação!!", "Erro", JOptionPane.ERROR_MESSAGE);
            System.exit(1);
        }
    }

    public void iniciarProduto() {
        //Ler os produtos no arquivo
        try {
            inputProduto = new DataInputStream(new FileInputStream("produto.dat"));
        } catch (IOException e) {
            JOptionPane.showMessageDialog(jFmenu.this, "Falha na Abertura do Arquivo para Leitura", "Erro", JOptionPane.ERROR_MESSAGE);
            System.exit(1);
        }

        //InstanciarProduto
        String nome;
        String descricao;
        int codigo;
        int quantidadeVendida;
        double preco;

        //Carrega os produtos do arquivo para as coleções
        try {
            while (moreRecordsProduto) {
                nome = inputProduto.readUTF();
                descricao = inputProduto.readUTF();
                codigo = inputProduto.readInt();
                quantidadeVendida = inputProduto.readInt();
                preco = inputProduto.readDouble();

                Produto temporario = new Produto(nome, descricao, codigo, quantidadeVendida, preco);
                adicionaProduto(temporario);
            }
        } catch (EOFException eof) {
            moreRecordsProduto = false;
        } catch (IOException e) {
            JOptionPane.showMessageDialog(jFmenu.this, "Erro durante leitura do arquivo", "Erro", JOptionPane.ERROR_MESSAGE);
            System.exit(1);
        }

        //Fecha o objeto inputProdut
        try {
            inputProduto.close();
        } catch (IOException e) {
            JOptionPane.showMessageDialog(jFmenu.this, "Falha no Fechamento do Arquivo durante Leitura", "Erro", JOptionPane.ERROR_MESSAGE);
            System.exit(1);
        }


    }

    public void gravarProduto() {
        //Abre arquivo para gravar
        try {
            outputProduto = new DataOutputStream(new FileOutputStream("produto.dat", false));
        } catch (IOException e) {
            JOptionPane.showMessageDialog(jFmenu.this, "Falha na Abertura do Arquivo para Gravação", "Erro", JOptionPane.ERROR_MESSAGE);
            System.exit(1);
        }

        //Escreve toda a coleção de produtos no arquivo
        try {
            for (Produto a : produtos) {
                outputProduto.writeUTF(a.getNome());
                outputProduto.writeUTF(a.getDescricao());
                outputProduto.writeInt(a.getCodigo());
                outputProduto.writeInt(a.getQuantidadeVendida());
                outputProduto.writeDouble(a.getPreco());
            }
        } catch (IOException e) {
            JOptionPane.showMessageDialog(jFmenu.this, "Erro durante gravação no arquivo", "Erro", JOptionPane.ERROR_MESSAGE);
            System.exit(1);
        }

        //Fecha os arquivos Output produto
        try {
            outputProduto.flush();
            outputProduto.close();
        } catch (IOException e) {
            JOptionPane.showMessageDialog(jFmenu.this, "Falha no Fechamento do Arquivo - Durante Gravação!!", "Erro", JOptionPane.ERROR_MESSAGE);
            System.exit(1);
        }
    }

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new jFmenu().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JLabel jLabel1;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenu jMenu3;
    private javax.swing.JMenu jMenu4;
    private javax.swing.JMenu jMenu5;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JMenuItem jMenuItem10;
    private javax.swing.JMenuItem jMenuItem11;
    private javax.swing.JMenuItem jMenuItem2;
    private javax.swing.JMenuItem jMenuItem3;
    private javax.swing.JMenuItem jMenuItem4;
    private javax.swing.JMenuItem jMenuItem5;
    private javax.swing.JMenuItem jMenuItem6;
    private javax.swing.JMenuItem jMenuItem7;
    private javax.swing.JMenuItem jMenuItem8;
    private javax.swing.JMenuItem jMenuItem9;
    private javax.swing.JPanel jPanel1;
    // End of variables declaration//GEN-END:variables
    //Coleções do tipo LinkedList para as classes usadas
    private static LinkedList<Produto> produtos = new LinkedList<Produto>();
    private static LinkedList<Garcom> garcons = new LinkedList<Garcom>();
    private static LinkedList<Caixa> caixas = new LinkedList<Caixa>();
    private DataOutputStream outputGarcom;
    private DataInputStream inputGarcom;
    private boolean moreRecordsGarcom = true;
    private DataOutputStream outputProduto;
    private DataInputStream inputProduto;
    private boolean moreRecordsProduto = true;

    //Metodo para adicionar um objeto Produto a LinkedList "produtos"
    public static void adicionaProduto(Produto p) {
        produtos.add(p);
    }

    //Metodo para adicionar um objeto Garcom a LinkedList "garcons"
    public static void adicionaGarcom(Garcom g) {
        garcons.add(g);
    }

    //Método para adicionar uma caixa a LinkedList caixas
    public static void adicionaCaixa(Caixa c) {
        caixas.add(c);
    }

    //Método para adicionar uma comanda na LinkedList caixas de acordo com o índice da caixa
    public static void adicionaComanda(int i, Comanda c) {
        caixas.get(i).adicionaComanda(c);
    }

    //Método para retornar apenas uma comanda de acordo com o índice do caixa o índice da comanda    
    public static Comanda retornaUmaComanda(int indice_caixas, int indice_comanda) {

        return caixas.get(indice_caixas).retornaUmaComanda(indice_comanda);

    }

    public static Garcom retornaUmGarcom(int indice_garcom) {

        return garcons.get(indice_garcom);

    }

    public static Produto retornaUmProduto(int indice_produto) {

        return produtos.get(indice_produto);

    }

    //Método para retornar a LinkedList comandas para ser trabalhara em qualquer classe
    public static LinkedList<Comanda> retornaComanda(int indice) {

        return caixas.get(indice).retornaComandas();

    }

    public static Caixa retornaUmCaixa(int indice) {
        return caixas.get(indice);
    }

    //Método para retornar a LinkedList garcons para ser trabalhara em qualquer classe
    public static LinkedList<Garcom> retornaGarcons() {
        return jFmenu.garcons;
    }

    //Método para retornar a LinkedList caixas para ser trabalhara em qualquer classe
    public static LinkedList<Caixa> retornaCaixas() {
        return jFmenu.caixas;
    }

    //Método para retornar a LinkedList produtos para ser trabalhara em qualquer classe
    public static LinkedList<Produto> retornaProdutos() {
        return jFmenu.produtos;
    }
}
